Conventional techniques for rendering three-dimensional (3D) models into two-dimensional (2D) images are directed towards projecting 3D surfaces onto a 2D image plane. The image plane is divided into a 2D array of pixels (picture elements) that represent values corresponding to a particular point in the image plane. Each pixel may represent the color of a surface at a point intersected by a ray originating at a viewing position that passes through the point in the image plane associated with the pixel. The techniques for rendering 3D models into 2D images include rasterization and ray-tracing.
Voxelization is a 3D equivalent to the 2D techniques discussed above. Instead of projecting 3D surfaces onto a 2D image plane, 3D surfaces are rendered onto a regular grid of discretized volume elements in a 3D space. A voxel (volumetric picture element) is a volume element, such as a cube, that represents a value of a 3D surface or solid geometric element at a point in the 3D space. There are multiple techniques for rendering 3D model data into a 3D image comprising a plurality of voxels.
Solid voxelization is one technique that is effective for use with 3D models that include objects defined as a closed mesh. For each object, a plurality of voxels that intersect the closed mesh are tagged and a value is calculated for each of the tagged voxels. However, 3D models in conventional graphics are typically defined using open meshes (i.e., thin surfaces). Because the surfaces do not have a thickness, it is possible that rendering algorithms tailored to solid voxelization may fail. A second technique, surface voxelization, is more suited to rendering of open meshes. Instead of calculating a value for each voxel enclosed within the mesh, values are only calculated for the voxels that intersect the surface of the mesh (i.e., excluding voxels enclosed within the mesh that do not intersect the surface of the mesh). Surface voxelization is useful in applications that need to retain the separation properties of a surface, such as techniques for generating computer generated graphics using ray-tracing with voxel data.
However, there are problems with conventional techniques for surface voxelization. For example, where the surface intersects with the corner of a voxel, conventional surface voxelization techniques may render the voxel even though the voxel does not contribute to the final result. Rendering unnecessary voxels decreases performance of the rendering system. Thus, there is a need for more accurate surface voxelization techniques that address this issue and/or other issues associated with the prior art.